//TODO  类的继承      类与类之间的关系      继承后类与类之间的叫法=>a类继承了b类  a:子类(派生类)  b:父类
(()=>{
//定义一个类,作为父类使用
    class Person{
        //定义属性
        name:string
        age:number
        gender:string
        //定义构造函数
        constructor(name:string,age:number,gender:string) {
            //更新属性数据
            this.name=name
            this.age=age
            this.gender=gender
        }
        //定义实例方法
        sayHi(str:string){
            console.log(`我是:${this.name},你是${str}`)
        }
    }

    //定义一个类,继承于Person
    class Student extends Person{
        constructor(name:string,age:number,gender:string) {
            //调用的父类中的构造函数,使用的是super
            super(name,age,gender);
        }
        //可以调用父类中的方法
        sayHi(){
            console.log('我是学生中的sayHi方法')
            //调用父类中的sayHi方法
            super.sayHi('哈哈')
        }
    }

    //实例化person
    const person = new Person('小明',16,'男')
    //实例化student
    const studet = new Student('小张',14,'女')

    person.sayHi('小甜甜')
    studet.sayHi()

    /*TODO 类和类之间如果要有继承关系,需要使用extends关键字
    *  子类中可以调用父类中的构造函数,使用的是super关键字(包括调用父类中的实现方法,也可以只用super)
    *  子类中也可以重写父类中的方法 */


})()
